#include <iostream>
#include <string>
#include <map>
#include <utility>

using namespace std;

void show(const char *msg, map<string, string> mp);

int main() {
  map<string, string> phonemap;

  phonemap["A"] = "444-555-1234";
  phonemap["B"] = "555-555-6576";
  phonemap["C"] = "555-555-9843";

  show("Here is the original map: ", phonemap);

  phonemap["B"] = "555 555-5555";
  cout << "New number: " << phonemap["B"] << endl;

  // Cycle through the map in the reverse direction.
  map<string, string>::reverse_iterator ritr;
  cout << "Display phonemap in reverse order:" << endl;
  for(ritr = phonemap.rbegin(); ritr != phonemap.rend(); ++ritr)
     cout << ritr->first << ": " << ritr->second << endl;

  return 0;
}

// Display the contents of a map<string, string> by using an iterator.
void show(const char *msg, map<string, string> mp) {
  map<string, string>::iterator itr;

  cout << msg << endl;

  for(itr=mp.begin(); itr != mp.end(); ++itr)
   cout << " " << itr->first << ": " << itr->second << endl;

  cout << endl;
}
